「我記得很久以前我們談到系統的升級,這是怎麼發生的呢?中間有什麼過程」特務 K 問。
「這是個長故事,我們今天來談談」小雨說。
今年四月的某一天,小雨從電子郵件的通知中,得知共識客戶端發布了一個新版本。
這個新版本標記為「高優先度」,並註明支援主網路,代號為 Pectra 的升級。
差不多的時候,小雨也收到共識客戶端類似的通知。
以太坊基金會的官方部落格也 宣布了升級日期 及內容。
2025 年 5 月 27 號。第 364032
個計票期。
時間非常精確。
社群網路上沸沸揚揚各種期待的聲音。
小雨抽空躲到秘密地下室裡,開啟作為節點的主機。主機已經靜靜的在那邊運作多年,沒人講的話完全不會注意到他的存在。
小雨照著他熟悉的流程, git pull 拉回新的版本,確認過版號,並開始建置新版本的客戶端軟體。
共識客戶端 ... 停止。
執行客戶端 ... 停止。
執行客戶端 ... 啟動。
共識客戶端 ... 啟動。
節點照著熟悉的流程,緩緩地找回同儕節點,以及同步喪失數分鐘的區塊。
接下來就等升級的那一天了。
以太坊社群通常會有升級相關的活動與 直播 ,人們盯著節點日誌與儀表板上一個個新產出的區塊,倒數接近升級的那個計票期。直播中,相關的開發者與研究員也會介紹這次升級的內容。例如這次升級會帶來許多驗證者體驗的改善,以及提升系統的資料泡服務量。
「為什麼人們要那麼焦慮的看著產出的區塊呢?我能體會那種跨年般倒數的氣氛,但似乎人們也有某種隱憂」特務 K 問。
「這需要談到所謂『升級』背後做的事情」小雨說。
升級其實是一種對協議的更動:改動全節點驗證一個區塊的規則。
以這次資料泡的升級為例。在升級之前,用於定價的軟上限是每個區塊 3 個資料泡,硬上限是 6 個。升級之後,改為軟上限 6 個,硬上限 9 個。
如果有個區塊搭載 8 個資料泡,跑著舊版客戶端的節點是不會收下該區塊的。但跑新版客戶端的節點會收下。
升級是一種節點運行者需要明確同意的事情。如果使用者不同意升級,也就是不下載更新版的客戶端,會與所有舊版的節點形成自己的另外一個網路。舊版節點會認為新版節點所產出的區塊是不合協議規則,而將之拒絕。
這是為什麼升級,其實也稱「硬分岔」,新與舊的節點將互不相容。
以太坊因為避免單一節點的程式碼故障,癱瘓整個網路,因此實作了多種客戶端。
在升級的當下,所有使用新版客戶端軟體的節點,會開始套用新的協議規則來驗證區塊。
人們在觀察說,會不會有區塊是有些客戶端不收的,最後不同客戶端間形成了分岔鏈。
「不過這種狀況的機會不太大,以前也從沒發生過」小雨說。
因為在升級前其實開發者和研究者做足了許多準備,才讓升級能順利進行。
以太坊協議的更動,是由一套 EIP 治理流程所決定的。
以太坊改進提案(Ethereum Improvement Proposals, EIP) 是以太坊協議的標準制定流程。
研究員通常會在 https://ethresear.ch/ 網站提出研究想法。在研究結果確定之後,以及某些實驗或軟體雛形開發成功後,會開始起草一個 EIP 。
在 https://eips.ethereum.org/ 網站上,我們可以看到各式各樣的提案。
其中 核心(Core)這一類型的提案影響比較重大,因為會影響到節點升級。
其他有名的類別如 ERC ,許多知名的標準如:現在到處都是的 ERC20 代幣, NFT 用的 ERC721 ,或是影響數位簽章安全的 EIP-712 。這類標準因為不牽扯節點升級,僅規範合約實作介面,一般稱 ERC (但一些比較早期的提案仍稱 EIP)。
提案發起後,提案人會繼續到 https://ethereum-magicians.org 論壇討論。
他們可能會在各種年會或開發者實體活動中,和實作客戶端的開發者討論。
最後一些開發、測試細節會在 核心開發者會議 All Core Dev Call 討論。並決定開發進度是否能納入該年的升級。
所有升級的提案的實作,也都會在測試網路先行升級,早先發現各種可能的狀況。
面對一個幾兆台幣的平台,升級事關重大。
又升級往往牽扯極其複雜的技術決策,決策又是人做出來的。到底誰會影響這些決策?誰又會被這些決策影響?
如果這裡面少少的人有辦法做出重大影響,是否會成為這個充滿各種防禦機制的平台的阿基里斯腱?
我們舉出一些範例,但這些並不是全部
最終最終是全節點要不要接受升級。
但沒有辦法證明一個人是不是跑節點的人
一篇近期的 論文 列出一些觀察
這套治理機制如何面對反對的聲音?
曾經 2016 時,DAO 硬分岔時,一群不同意分岔的人跑了一條以太坊經典(Ethereum Classic)分岔鏈,至今仍 持續運作中,並維持著算力制。
在以太坊升級為押金制時,一群不甘的中國礦工也自行形成了 ETHW 分岔鏈。至今似乎已經沒有運作。
在與主流沒有共識時,少數人能以分岔的方式運作。
但對於個別的提案,似乎治理機制會偏好幾乎沒有太多異議的提案。
一但爭議發生時,會將提案延後處理,待提案人與反對者溝通。近期的例子是 EOF 提案被從比較近的升級中 移除。固然技術複雜度是一個原因,但在先前的升級中,反對者的聲音沒有進到治理程序裡面也是個原因。
儘管是銅牆鐵壁的系統,仍有一些咽喉點,需要人為治理來介入。
以太坊不是一個毫無人煙的無政府主義烏托邦,而是一個還年輕有許多熱情人士澆灌的技術產物。
以太坊也曾經展現出許多有創意的治理技術:例如冰河時期的設計。冰河時期是算力制時期的機制,他會讓出塊時間漸漸變慢,慢到系統再也無法有意義使用為止。這個設計是為了讓以太坊束縛其承諾的押金制轉換,人們必須在冰河時期到來之前,做出政治決策,要不升級成押金制,要不就在繼續升級推遲冰河時期。而這些決策,必須要有營運節點的個人的支持。
冰河時期相當是一條用數學做出來的,活的死線。
技術治理,也許不是 IT 人擅長的電腦議題。但仍是系統的一環,有許多挑戰與創意有待人們探索。